<?php


/**
* Функции глобального контекста.
*
* @author Владислав В. Костянецкий <bytecoded@gmail.com>
* @link   http://drfreddy.ru/akinoyume/
*/


/**
* Выводит содержимое полученных аргументов и завершает работу сценария.
*
* @return void
*
* @internal maybe remove at any time
*/
function debug()
{
  print '<pre>';
 
  $arguments = func_get_args();
 
  if ( is_array( $arguments) and count( $arguments ) )
  {
    foreach ( $arguments as $something ) print_r( $something );
  }

  print '</pre>';
  
  exit;
}


/**
* Автоподгрузка классов.
*
* @param   string  $class  Имя нужного класса.
* @return  void
*/
function __autoload( $class )
{
  require_once PATH . "classes/{$class}.php";
} 


/**
* Пересоединение на страницу.
*
* @param   string   $url   Адрес для редиректа.
* @return  void
*/  
function redirect( $url )
{
  header( "Location: $url" );
    
  exit;
}    


/**
* Очистка контента перед выводом пользователю.
*
* @param   mixed  $content  Данные для вывода.
* @return  mixed
*/  
function cleaner( $content )
{
  if ( is_array( $content ) )
  {  
    foreach ( $content as $k => $v ) 
    {
      $content[ $k ] = htmlspecialchars( $content[ $k ], ENT_COMPAT, 'utf-8' );
    }
  }
  else if ( is_string( $content ) )
  {
    $content = htmlspecialchars( $content, ENT_COMPAT, 'utf-8' );
  }
    
  return $content;
}


/**
* Морфологическая обработка числительных.
*
* @param   string   $number    Сабжевое число.  
* @param   array    $numerals  Числительные.
* @return  string
*/
function numeral( $number, $numerals )
{  
  $numeral = substr( strval( $number ), strlen( strval( $number ) ) - 2 );

  $numeral = $numeral > 15 ? intval( substr( $numeral, 1 ) ) : intval( $numeral );
  $numeral = $numeral > 10 && $numeral <= 14 ? 5 : intval( $numeral );

  $result = $numeral > 1 && $numeral < 5 ? 2 : ( $numeral == 1 ? 1 : 5 );

  return $number . ' ' . $numerals[ $result ];
}